iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
DevOps

SRE/K8S 碎碎念系列 第 19

D19 Maintenance mode

  • 分享至 

  • xImage
  •  

今天來討論 maintenance mode 的實踐,我們 maintenance mode 基本的概念是調整 ALB 的 rule。並將他轉導到 503 response。為了做到這件事情,我們將他的設定架構在 IaC 的流程上,並在 terraform 設定上新增開關

module "maintenance_mode" {
  enabled_maintenance_mode   = var.enabled_maintenance_mode #each.value.enabled
}

# ALB
resource "aws_lb_listener_rule" "maintenance_on_allow_whitelist" {
  count        = var.enabled_maintenance_mode ? local.num_allow_cidrs : 0
 
  action {
    type             = "forward"
    target_group_arn = data.aws_lb_target_group.selected.arn
  }
}

resource "aws_lb_listener_rule" "maintenance_on_response_503" {
  count        = var.enabled_maintenance_mode ? 1 : 0

  priority = 1 + var.num_target_groups + var.num_target_groups * local.num_allow_cidrs + var.target_group_index

  action {
    type = "fixed-response"

    fixed_response {
      content_type = "application/json"
      message_body = "maintenance mode is enabled."
      status_code  = "503"
    }
  }
}

當今天要進入 Maintenance mode,我們會將 terraform 的 module maintenance mode on,並部署。這時 ALB rule 就會快樂切換成對應的 response 了。但我們後來遇到了一個大問題,因為 ALB 其實是 eks ingress 建立的,ingress 會自動將他設定回原本的設定值!所以每次我們部署完,其實 EKS 會自動調整回來!那要如何調整呢?我們後來決定往上一層,從 ingress 進行修改。


上一篇
D18 Traces
下一篇
D20
系列文
SRE/K8S 碎碎念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言